[SEA-NodeJS] (7/8) Operation lifecycle — cancel / close / finished + INTERVAL parity + napi relocation#384
Conversation
|
Thanks for your contribution! To satisfy the DCO policy in our contributing guide every commit message must include a sign-off message. One or more of your commits is missing this message. You can reword previous commit messages with an interactive rebase ( |
e06a5e8 to
9b057f0
Compare
|
Thanks for your contribution! To satisfy the DCO policy in our contributing guide every commit message must include a sign-off message. One or more of your commits is missing this message. You can reword previous commit messages with an interactive rebase ( |
5d64f20 to
01e4b91
Compare
9b057f0 to
1a9ddd9
Compare
|
Thanks for your contribution! To satisfy the DCO policy in our contributing guide every commit message must include a sign-off message. One or more of your commits is missing this message. You can reword previous commit messages with an interactive rebase ( |
Rust source changes (native/sea/src/connection.rs + statement.rs) deferred to kernel repo PR #29 (kernel-napi-statement-validity) since napi/src now lives in databricks-sql-kernel/napi/. SeaOperationBackend.ts conflict resolved using integration commit 3da7aa7 (combining sea-results fetch pipeline with sea-operation lifecycle helpers). Signed-off-by: Madhavendra Rathore <madhavendra.rathore@databricks.com>
- YEAR-MONTH: convert Arrow Interval[YearMonth] to thrift "N-M" string format (with leading "-" for negatives) in Phase 1 of converter - DAY-TIME: pre-process IPC schema bytes before apache-arrow@13 decode (which predates the Arrow Duration type id 18) to remap Duration -> Int64 with original time unit preserved in `databricks.arrow.duration_unit` field metadata; convert Int64 duration values to thrift "D HH:mm:ss.fffffffff" string format Both interval flavours are formatted by the same converter helper (formatDayTimeFromTotal); the duration_unit metadata gates between the native Arrow Interval Int32Array path and the rewritten Duration Int64 path. No apache-arrow bump, no node_modules edits, no kernel-side change. New: lib/sea/SeaArrowIpcDurationFix.ts (FlatBuffer rewriter using apache-arrow's internal fb/* accessors). M0 datatype parity now 25/25. Signed-off-by: Madhavendra Rathore <madhavendra.rathore@databricks.com>
01e4b91 to
cd3b1e1
Compare
1a9ddd9 to
1f914fd
Compare
Stack
Linear stack of 8 PRs landing the M0 + M1 Phase 1 SEA NodeJS work. Merge in order from base ↑ to tip. The tip branch (
msrathore/sea-auth-u2m, PR #383) is the single snapshot containing everything in flight — point your test or benchmark harness at it for an end-to-end check.sea-abstractionsea-napi-binding.nodeartifactsea-errors-loggingErrorCode→ JS error-class mapping (M0 minimum)sea-authuseSEA: truesea-executionexecuteStatement+openSession(sessionConfig, initialCatalog/Schema)sea-resultssea-operationsea-auth-u2m← TIPCompanion kernel stack (
databricks/databricks-sql-kernel): 8 PRs — root #26 (async-public-api) → #27 → #25 → #29 → #28 → #30 → #24 → #23 (tip).Policy: new PRs always stack on the current tip. No sibling/parallel topology. No force-pushes on existing PRs unless absolutely necessary; if a PR's content is wrong, add a fix-up commit on top of the stack tip rather than rewriting history.
This PR is position 7/8.
Summary
Operation lifecycle (cancel / close / finished) plus content absorbed from the now-closed PR #385 (sea-integration) during the 2026-05-17 linear-stack restack.
Size note (2533 LOC, over the 800 cap)
This PR is large because three conceptually distinct concerns were stacked together during the linear-stack rebase. Reviewers should walk it commit-by-commit:
Group 1 — Operation lifecycle (~300 LOC, ~3 files)
lib/sea/SeaOperationLifecycle.tslib/sea/SeaOperationBackend.tscancel()/close()/finished()synthesised behaviorGroup 2 — INTERVAL Y-M + D-T parity (~1274 LOC, ~4 files)
lib/sea/SeaArrowIpcDurationFix.ts— JS-side IPC FlatBuffer rewrite for Arrow Duration → Int64 with metadataDurationcolumns to thrift's"Y-M"and"D HH:mm:ss.fffffffff"text formatsea-integration@4d80267during the linear-stack rebasekrn-interval-text-format)Group 3 — napi source relocation acceptance (~900 LOC, ~6 files, mostly deletions)
native/sea/src/*.rs(Rust napi binding source)sea-integration@1226b62during the linear-stack rebaseTest plan
napi/crate (kernel PR #25); no JS-side Rust source neededDraft until you give the go for review.
Tracking
Co-authored-by: Isaac